using LF.Shared.Dtos.Input;
using LF.Shared.Dtos.Out;

namespace LF.Application.Services
{
    public interface IParamConfigService : IApplicationService
    {
        /// <summary>
        /// 获取参数配置列表
        /// </summary>
        /// <param name="search">搜索条件</param>
        /// <returns>参数配置列表</returns>
        Result<ParamConfigSearchOut> List(ParamConfigSearch search);
        
        /// <summary>
        /// 获取参数配置详情
        /// </summary>
        /// <param name="id">参数配置ID</param>
        /// <returns>参数配置详情</returns>
        Result<ParamConfigOut> Info(Guid id);
        
        /// <summary>
        /// 新增参数配置
        /// </summary>
        /// <param name="input">参数配置信息</param>
        /// <returns>操作结果</returns>
        Result Create(ParamConfigInput input);
        
        /// <summary>
        /// 更新参数配置
        /// </summary>
        /// <param name="id">参数配置ID</param>
        /// <param name="input">参数配置信息</param>
        /// <returns>操作结果</returns>
        Result Update(Guid id, ParamConfigInput input);
        
        /// <summary>
        /// 删除参数配置
        /// </summary>
        /// <param name="id">参数配置ID</param>
        /// <returns>操作结果</returns>
        Result Delete(Guid id);
        
        /// <summary>
        /// 根据键名获取参数配置
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns>参数配置详情</returns>
        Result<ParamConfigOut> GetByKey(string key);
    }
} 